from pyecharts.charts import Bar, Line
from pyecharts import options as opts
from pyecharts.faker import Faker

# 一、柱状图
bar = Bar()
x_data = Faker.choose()  # 随机选取7个同类的名词
y_data = Faker.values()  # 随机选取7个数据
bar.add_xaxis(x_data)  # 添加x轴数据
bar.add_yaxis("柱状图", y_data)  # 添加y轴数据

# 二、折线图
line = Line()
# 使用相同的 x_data 和 y_data
line.add_xaxis(x_data)  # 添加x轴数据
line.add_yaxis("折线图", y_data)  # 添加y轴数据

# 将柱状图和折线图叠加在一起
bar.overlap(line)

# 设置全局选项
bar.set_global_opts(
    title_opts=opts.TitleOpts(title="组合图表"),
    tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
    xaxis_opts=opts.AxisOpts(type_="category", axistick_opts=opts.AxisTickOpts(is_show=True), splitline_opts=opts.SplitLineOpts(is_show=True)),
    yaxis_opts=opts.AxisOpts(type_="value")
)

# 游标配置
bar.set_series_opts(
    markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")]),
    markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")])
)

# 渲染图表
bar.render("组合图表.html")
